With the advent of NetWare v2.1, Novell introduced new concepts in printing. New concepts such as assignable queues (mentioned earlier in this chapter), initialization strings and concurrent capturing of output to three separate printer ports. Not least among these new features were the new programs that brought them to life. New utilities, CAPTURE, PRINTCON and PRINTDEF, fostered these new aspects of printing with NetWare. The plan was rosy and full of glee for those looking on. However, a small blemish, perhaps overlooked by Novell, tainted the new printing concepts. Fortunately, only the network administrator had to be aware of this smirch. This tarnish on the printing system is the inability to globally define a PRINTCON job database. For those unknowing, PRINTCON gives the ability to predefine commonly used printing parameters so that they can be referenced quickly and easily. In its natural form, these PRINTCON job databases have to be created, and maintained for every user account that makes use of them. These PRINTCON databases are stored in each users' personal mailbox directory (SYS:MAIL\xxxxxxxx). It is not uncommon for many users to require the same PRINTCON database. Since PRINTCON databases are not wholly unique to each user, a network administrator would expect the ability to define PRINTCON databases which can be shared among their users. After all, they can share a common login script, why not a common PRINTCON database. Luckily there are two methods, without purchasing third party products, that allow for the sharing of a common PRINTCON database. The first method is to set the shell's search mode to 5, which means always search during open file requests. Coupled with using search mode 5 is the placement of the common PRINTCON database in a search directory, for instance SYS:PUBLIC. This method is easier to implement of the two. However, it does have the disadvantage of forcing the shell to always search for every open file request. This could place your system into jeopardy of reading the wrong files or causing users' to become confused. Say that a user was trying to load a file from one directory, and say that if they are unable to load that file, they know to create a new one. However, say that a file of the same name exists in a search directory to which they have access. The file would be loaded from the search directory upon failing to open it on the first, intended, drive. So, remember that by setting the shell search mode to 5 you have to realize the consequences. The second method, though a bit more technical, gives you more control. Aiding in this emancipation is the DOS utility, DEBUG. There are only three utilities which seek out the PRINTCON database. The first is PRINTCON, then CAPTURE and thirdly, NPRINT. The idea is to alter the filename that these utilities search for, by which it is possible to distinctively select where a PRINTCON database is found. Before showing the debug steps note that when debugging a file with an .EXE extension you need to rename the file so that it does not have an .EXE extension. This change of filename only lasts for the debug session, afterwards, the original filename should be restored. Now, without further adieu, here are the debug steps for CAPTURE: 1) Rename CAPTURE.EXE to C. (something without an .EXE extension) 2) Run DEBUG C. 3) Type at the - prompt: -scs:100 ffff 'sys:mail' It will bring up an address like: 5E42:8528 now, use the number on the right side of the :, in this case, that number would be 8528, remember, this number is in hexadecimal 4) Type at next - prompt: -f8528 L1c 'sys:mail\printcon.dat',0,0,0,0,0,0,0 type it in exactly like that, substituting the number following the "f" for your own 5) Type at the next - prompt: -W (it will say Writing xxxx bytes) 6) Type at the next - prompt: -Q this will quit DEBUG and return you to DOS 7) Rename C. back to CAPTURE.EXE 8) Place your "GLOBAL" PRINTCON database in the SYS:MAIL directory (You can make the directory something else, in this example we have chosen SYS:MAIL, it could be anything that will fit in the line from step 4 so long as there is at least one remaining 0 after the text, also if you change the name, alter the number 0s following the name appropriately so that the same total number of characters is obtained 9) Pat yourself on the back, you are done! The above patch also works with NPRINT, the patch address(es) you find will most likely be different. However, the above patch does not work with PRINTCON.EXE. Though entirely optional and not necessary to achieve a global PRINTCON database, PRINTCON can be patched. Through the use of some disk editing utility, such as the Norton Utilities, it would be possible to find the 'sys:mail' text and modify it accordingly. Note that this same method of using a disk editing utility could be performed for the modification of CAPTURE and NPRINT. Thus, the use of debug is not mandatory. It may be unclear as to where the global PRINTCON database comes from. To clarify, one scenario would be that the PRINTCON database is created by the SUPERVISOR user. The SUPERVISOR user's mailbox directory is always SYS:MAIL\1. So, after the creation (or modification) of the SUPERVISOR's PRINTCON database it could be copied where the global PRINTCON is expected. That's it, the steps to a global PRINTCON database are painless and the benefits many. No longer will the network administrator be forced to maintain redundant PRINTCON databases. If you want to include this, here it is.... example before and after -d8528 5E42:8520 73 79 73 3A 6D 61 69 6C sys:mail 5E42:8530 5C 25 6C 78 5C 25 73 00-70 72 69 6E 74 63 6F 6E \%lx\%s.printcon 5E42:8540 2E 64 61 74 00 00 53 59-53 3A 50 55 42 4C 49 43 .dat..SYS:PUBLIC 5E42:8550 5C 4E 45 54 24 50 52 4E-2E 44 41 54 00 00 00 00 \NET$PRN.DAT.... 5E42:8560 00 B2 0A B2 20 20 00 B0-21 22 23 24 25 26 27 28 .... ..!"#$%&'( 5E42:8570 29 2A 2B 2C 2D 2E 2F 30-31 32 33 34 35 36 37 38 )*+,-./012345678 5E42:8580 39 3A 3B 3C 3D 3E 3F 40-41 42 43 44 45 46 47 48 9:;<=>?@ABCDEFGH 5E42:8590 49 4A 4B 4C 4D 4E 4F 50-51 52 53 54 55 56 57 58 IJKLMNOPQRSTUVWX 5E42:85A0 59 5A 5B 2F 5D 5E 20 60 YZ[/]^ -f8528 l1c 'sys:mail\printcon.dat',0,0,0,0,0,0,0 -d8528 5E42:8520 73 79 73 3A 6D 61 69 6C sys:mail 5E42:8530 5C 70 72 69 6E 74 63 6F-6E 2E 64 61 74 00 00 00 \printcon.dat... 5E42:8540 00 00 00 00 00 00 53 59-53 3A 50 55 42 4C 49 43 ......SYS:PUBLIC 5E42:8550 5C 4E 45 54 24 50 52 4E-2E 44 41 54 00 00 00 00 \NET$PRN.DAT.... 5E42:8560 00 B2 0A B2 20 20 00 B0-21 22 23 24 25 26 27 28 .... ..!"#$%&'( 5E42:8570 29 2A 2B 2C 2D 2E 2F 30-31 32 33 34 35 36 37 38 )*+,-./012345678 5E42:8580 39 3A 3B 3C 3D 3E 3F 40-41 42 43 44 45 46 47 48 9:;<=>?@ABCDEFGH 5E42:8590 49 4A 4B 4C 4D 4E 4F 50-51 52 53 54 55 56 57 58 IJKLMNOPQRSTUVWX 5E42:85A0 59 5A 5B 2F 5D 5E 20 60 YZ[/]^ -w Writing 8800 bytes -q *END*